program main
! 作者：何光辉,
! 邮箱：flamehe@163.com
    use DQ
    implicit none
    integer(4), parameter :: iwp=16 
    !设定参与计算的浮点数为real(16),改进度可以有效减弱舍入误差导致的高阶导数权系数误差，
    !采用real(8)在计算高阶导数或者节点数很多的时候结果误差会很大
    integer(4), parameter :: maxorder = 3, n=100 !计算最高导数阶次为100，设定扩展切比雪芙多项式零点个数为100
    integer(4) :: i, j, k
    real(iwp) :: xlist(n)
    real(8) :: t0, t1
    real(iwp), allocatable :: c(:,:,:)
    
    call ExpandedChebyshev(n, xlist) 
    ! 在[-1,1]标准区间，生成n节点的扩展切比雪芙多项式零点。
    ! 用户也可以按照自己指定xlist为任意由从小到大的浮点数组成的一维数组，数组的数据类型必须为real(16)
    call cpu_time(t0)
    allocate( c(0:maxorder,n,n) )
    call DQCoeff(xlist, maxorder,c)
    
    open(unit = 10, file = "res.txt")
   
    do k=0,maxorder
        write(10,"(a6, i3)") "order = ", k
        write(10, 100) ((c(k,i,j),j=1,n),i=1,n)
    end do

    call CPU_TIME(t1)
    write(*,"(a10, e10.3, a4)") "CPU Time =", t1 - t0, " sec"
100 format (100(e26.15)) ! 以100个节点为例，设定的输出格式，如果n不是100，就要修改这里的100为相应的整数
end program main